#ifndef __SMP_H__
#define __SMP_H__
#include <cdefs.h>
#include <stdint.h>
#include <stdbool.h>
#include <util.h>
#include <cpu.h>

#ifndef __ASSEMBLER__

typedef void (*smp_call_func_t)(void *arg);

/*
 * smp_call_function - 在指定的@target_cpu上执行函数@func
 * @func: 要执行的函数指针
 * @arg: 传递给函数的参数
 * @wait: 为真时表示需要等待@func执行完毕后,本函数才能返回
 * Return: 0 on success, else a negative status code
 */
int smp_call_function(int target_cpu, smp_call_func_t func, void *arg, bool wait);

#endif /* __ASSEMBLER__ */
#endif /* __SMP_H__ */
